package com.hy;

/**
 * Created With IntelliJ IDEA.
 * Descriptions:给定一个32位整数 num，你可以将一个数位从0变为1。
 * 请编写一个程序，找出你能够获得的最长的一串1的长度。
 * 示例 1：
 *
 * 输入: num = 1775(11011101111)
 * 输出: 8
 *
 * 示例 2：
 * 输入: num = 7(0111)
 * 输出: 4
 * author: Mr.Du
 * Date: 2023/5/8
 * Time: 23:57
 */
public class ReverseBits {
    
    public int reverseBits(int num) {
        int maxLen = 0, preLen = 0, curLen = 0, bits = 32;
        while (bits-- > 0) {
            if ((num & 1) == 0) {
                curLen -= preLen;
                preLen = curLen + 1;
            }
            curLen++;
            maxLen = Math.max(maxLen, curLen);
            num >>= 1;
        }
        return maxLen;
    }
}
